package cn.parker.excel.abstracts;

import lombok.extern.slf4j.Slf4j;

import java.util.Map;

/**
 * <pre>
 * 字典抽象类，如Excel导入导出需用到字典值转换则需要实现该抽象类方法
 * </pre>
 *
 * @author Parker
 * @version 1.0.0
 * @since 2025-07-29 1:39
 */
@Slf4j
public abstract class AbstractDictService {
    /**
     * 分隔符
     */
    String SEPARATOR = ",";

    /**
     * 根据字典类型和字典值获取字典标签
     *
     * @param dictType  字典类型
     * @param dictValue 字典值
     * @return 字典标签
     */
    String getDictLabel(String dictType, String dictValue) {
        return getDictLabel(dictType, dictValue, SEPARATOR);
    }

    /**
     * 根据字典类型和字典标签获取字典值
     *
     * @param dictType  字典类型
     * @param dictLabel 字典标签
     * @return 字典值
     */
    String getDictValue(String dictType, String dictLabel) {
        return getDictValue(dictType, dictLabel, SEPARATOR);
    }

    /**
     * 根据字典类型和字典值获取字典标签
     *
     * @param dictType  字典类型
     * @param dictValue 字典值
     * @param separator 分隔符
     * @return 字典标签
     */
    public String getDictLabel(String dictType, String dictValue, String separator) {
        log.error("请重写AbstractDictService.getDictLabel方法");
        return null;
    }

    /**
     * 根据字典类型和字典标签获取字典值
     *
     * @param dictType  字典类型
     * @param dictLabel 字典标签
     * @param separator 分隔符
     * @return 字典值
     */
    public String getDictValue(String dictType, String dictLabel, String separator) {
        log.error("请重写AbstractDictService.getDictValue方法");
        return null;
    }

    /**
     * 获取字典下所有的字典值与标签
     *
     * @param dictType 字典类型
     * @return dictValue为key，dictLabel为值组成的Map
     */
    public Map<String, String> getAllDictByDictType(String dictType) {
        log.error("请重写AbstractDictService.getAllDictByDictType方法");
        return null;
    }
}
